package com_7;

import java.util.*;

/*
思路：1，HsahMap集合对牌进行储存
       2，创建Arraylist集合存储扑克牌的编号
       3，创建TreeSet给三个选手进行发牌，也就是遍历
       4，构造方法进行看牌
 */
public class Tset {//定义一个测试类
    public static void main(String[] args) {//main方法入口
        HashMap<Integer, String> map = new HashMap<>();//创建hashmap创建对象对牌的张数以及牌的样子进行存储
        ArrayList<Integer> arr = new ArrayList<>();//创建集合对象存储牌的张数
        String[] colors = {"！", "&", "%", "#"};//定义颜色为字符串数组
        String[] number = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};//定义牌为字符串数组
        int index = 0;//定义键位初始值为0
        for (String s1 : colors) {//使用for循环对颜色字符串数组进行存储
            for (String s2 : number) {//使用for循环对牌的张数进行遍历
                map.put(index, s1 + s2);//将牌的张数和牌存储到map中去
                arr.add(index);//将牌的索引也就是牌的张数同时存入到ArrayList集合中去
                index++;//
            }
        }
        map.put(index, "小王");//将小王的以及键位存入到map中去
        arr.add(index);///将索引值值同时存入到ArrayList集合中去
        index++;//小王存入后数字会增加
        map.put(index, "大王");//将大王和大王的键位存入到map中去
        arr.add(index);//将牌的索引值存入到ArrayList集合中去
        Collections.shuffle(arr);//使用方法将List集合中的索引值打散
        TreeSet<Integer> a = new TreeSet<>();//创建持有牌人对象
        TreeSet<Integer> b = new TreeSet<>();//创建持有牌人的对象
        TreeSet<Integer> c = new TreeSet<>();//创建持有牌人的对象
        TreeSet<Integer> d = new TreeSet<>();//创建持有牌人的对象
        for (int i = 0; i < arr.size(); i++) {//遍历数组
            Integer poker = arr.get(i);//获取的每一元素也就是每一张牌
            if (i >= arr.size() - 3) {//然后进行分析将牌分发给持牌人
                a.add(poker);//
            } else if (i % 3 == 0) {//然后进行分析将牌分发给持牌人
                b.add(poker);//
            } else if (i % 3 == 1) {//然后进行分析将牌分发给持牌人
                c.add(poker);//
            } else if (i % 3 == 2) {//然后进行分析将牌分发给持牌人
                d.add(poker);//
            }
        }
        lookPoker("底牌", a, map);//传入参数
        lookPoker("诸葛亮", b, map);//传入参数
        lookPoker("周瑜", c, map);//传入参数
        lookPoker("曹操", d, map);//传入参数
    }
    public static void lookPoker(String name, TreeSet<Integer> set, HashMap<Integer, String> map) {//定义看牌方法
        System.out.print(name + "的牌是：");//输出名字
        for (Integer key : set) {//对TreeSet集合进行遍历
            String poker = map.get(key);//通过之前存入的数字也就是键位在map中寻找对应的牌
            System.out.print(poker + " ");//再输出牌
        }
        System.out.println();//换行
    }

}
